package com.canaan.business.service.basic;

import java.util.List;

import com.canaan.business.domain.basic.Container;
import com.canaan.business.domain.basic.ContainerBarcode;
import com.canaan.business.domain.storehouse.WmsStorehouseStock;
import com.canaan.business.domain.vo.BarcodeVo;

/**
 * WMS 容器绑定条码Service接口
 *
 * @author ruoyi
 * @date 2023-08-01
 */
public interface IContainerBarcodeService {
    /**
     * 查询WMS 容器绑定条码
     *
     * @param id WMS 容器绑定条码主键
     * @return WMS 容器绑定条码
     */
    ContainerBarcode selectContainerBarcodeById(Long id);

    /**
     * 查询WMS 容器绑定条码列表
     *
     * @param containerBarcode WMS 容器绑定条码
     * @return WMS 容器绑定条码集合
     */
    List<ContainerBarcode> selectContainerBarcodeList(ContainerBarcode containerBarcode);

    /**
     * 新增WMS 容器绑定条码
     *
     * @param containerBarcode WMS 容器绑定条码
     * @return 结果
     */
    int insertContainerBarcode(ContainerBarcode containerBarcode);

    /**
     * 批量新增WMS 容器绑定条码
     *
     * @param containerBarcodeList WMS 容器绑定条码列表
     * @return 结果
     */
    int batchInsertContainerBarcode(List<ContainerBarcode> containerBarcodeList);

    /**
     * 修改WMS 容器绑定条码
     *
     * @param containerBarcode WMS 容器绑定条码
     * @return 结果
     */
    int updateContainerBarcode(ContainerBarcode containerBarcode);

    /**
     * 批量修改WMS 容器绑定条码
     *
     * @param containerBarcodeList WMS 容器绑定条码列表
     * @return 结果
     */
    int batchUpdateContainerBarcode(List<ContainerBarcode> containerBarcodeList);

    /**
     * 批量删除WMS 容器绑定条码
     *
     * @param ids 需要删除的WMS 容器绑定条码主键集合
     * @return 结果
     */
    int deleteContainerBarcodeByIds(Long[] ids);

    /**
     * 删除WMS 容器绑定条码信息
     *
     * @param id WMS 容器绑定条码主键
     * @return 结果
     */
    int deleteContainerBarcodeById(Long id);

    /**
     * 根据容器编号查询
     * @param containerNo
     * @return
     */
    List<ContainerBarcode> selectByContainerNo(String containerNo);

    /**
     * 根据容器编码查询入库条码信息
     * @param containerNo
     * @return
     */
    List<BarcodeVo> selectInStockBarCodeByContainerNo(String containerNo);

    /**
     * 根据容器编号或条码号查询容器信息
     * @param containerNoOrBarcode 容器编号或条码编号
     * @return Container
     */
    List<Container> selectByContainerNoOrBarcode(String containerNoOrBarcode);

    /**
     * 根据容器编码查询出库的库存条码信息
     * @param containerNo
     * @return
     */
    List<WmsStorehouseStock>  selectOutStockBarCodeByContainerNo(String containerNo);

    /**
     * 根据条码查询
     * @param barcode
     * @return
     */
    public List<ContainerBarcode> selectByBarcode(String barcode);

    /**
     * 根据条码查询
     * @param barcode
     * @return
     */
    public ContainerBarcode getByBarcode(String barcode);

}
